package com.ruoyi.common.utils.sender;

import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.ModuleEnum;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @program: base-srm
 * @description: 发号器
 * @author: Tawn
 * @create: 2022-11-22 10:06
 **/
public class NumberSender {
    private static final String DEFAULT_DATE_PATTERN ="yyMMdd";

    private static final int defaultSize = 6 ;


    public static String getOrderNumber() {
        //获取redis操作类自增
        RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
        Long value = 8800100000L + redisCache.redisTemplate.opsForValue().increment("OrderNumber");
        return value.toString();
    }

    public static String getNumber(ModuleEnum module, int size) {
        return getNumber(module.name(),DEFAULT_DATE_PATTERN,size);
    }
    public static String getNumber(ModuleEnum module,String pattern,int size) {
        return getNumber(module.name(),pattern,size);
    }
    public static String getNumber(ModuleEnum module) {
        return getNumber(module.name());
    }
    public static String getNumber(String module) {
        return getNumber(module,DEFAULT_DATE_PATTERN,defaultSize);
    }
    public static String getNumber(String module,String pattern,int size){
        //module 变为大写
        module = module.toUpperCase();
        //获取日期
        SimpleDateFormat s = new SimpleDateFormat(pattern);
        String date = s.format(new Date());
        //获取redis操作类自增
        RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
        Long value = redisCache.redisTemplate.opsForValue().increment(module+":"+date);
        //拼接0
        String result = StringUtils.padl(value,size);
        return new StringBuilder().append(module).append(date).append(result).toString();
    }
}
